package br.com.vti.sisp_sicrim.antigo.controller.tela;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Scrm111a
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Scrm111a {
	private boolean enviada = false;
	private String pagina = "/resources/antigo/jsp/Scrm111a.jsp";
	private String jVersaoj;
	private String dataCorrente;
	private String jFuncaoj;
	private String horaCorrente;
	private int jContadorj;
	private int jAlarm;
	private String chave;
	private long jregGeral;
	private long jCpf;
	private String jPmandp;
	private String jNomeCompleto;
	private String jMae;
	private String jPai;
	private String jDdNasc;
	private String jMmNasc;
	private String jAaNasc;
	private int jCodMunNascimento;
	private String jUfNascimento;
	private String jNatural;
	private int jOcorrencia;
	private int jArtigo;
	private String jInciso;
	private String jAlinea;
	private int jParagrafo;
	private int jLei;
	private int jAnoLei;
	private int jMatricula;
	private String jNomeDigitador;
	private String jDiaDig;
	private String jMesDig;
	private String jAnoDig;
	private int jHorario;
	private String jEmpresaj;
	private String jProgramaj;
	private String[] jAlcunha = new String[5];
	private String[] jObservacoes = new String[7];
	private String mensagem = "";
	private String funcao = "0";
	private String campofocus = "";
	private String navegar = "";
	private Boolean temMensagem = false;
	private Result result;
	private Sessao sessao;

	// Classes views
	// Classes includes
	public Scrm111a() {
		inicializar(false);
	}

	public Scrm111a(boolean primeiraVez, Sessao sessao) {
		this.sessao = sessao;
		inicializar(primeiraVez);
	}

	public void inicializar(boolean primeiraVez) {
		if (primeiraVez) {
			jVersaoj = "";
			dataCorrente = "";
			jFuncaoj = "";
			jContadorj = 0;
			jAlarm = 0;
			chave = "";
			jregGeral = 0;
			jCpf = 0;
			jPmandp = "";
			jNomeCompleto = "";
			jMae = "";
			jPai = "";
			jDdNasc = "";
			jMmNasc = "";
			jAaNasc = "";
			jCodMunNascimento = 0;
			jUfNascimento = "";
			jNatural = "";
			Arrays.fill(jAlcunha, "");
			jOcorrencia = 0;
			jArtigo = 0;
			jInciso = "";
			jAlinea = "";
			jParagrafo = 0;
			jLei = 0;
			jAnoLei = 0;
			Arrays.fill(jObservacoes, "");
			jMatricula = 0;
			jNomeDigitador = "";
			jDiaDig = "0";
			jMesDig = "0";
			jAnoDig = "0";
			jHorario = 0;
			jEmpresaj = "";
			jProgramaj = "";
			jContadorj = sessao.getScrg001().getWContadorw();
			jEmpresaj = sessao.getScrg001().getWEmpresaw();
			jFuncaoj = sessao.getScrg001().getWFuncaow();
			jProgramaj = sessao.getScrg001().getWProgramaw();
			jVersaoj = sessao.getScrg001().getWVersaow();
		}
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
	}

	public boolean receberTela(boolean primeiraVez, Result result) {
		// faz o tratamento das criticas necessarias para os dados da tela
		// recebida
		this.result = result;
		temMensagem = false;
		if (!primeiraVez) {
			return validar();
		} else {
			return true;
		}
	}

	public void enviarTela(boolean primeiraVez, Result result, String origem) {
		this.enviada = true;
		// rotina para enviar a tela
		// caso esteja setado valores para acoesFinais, executa as classes
		// correspondentes
		this.result = result;
		if (UtilBean.acoesFinais != null && !UtilBean.acoesFinais.isEmpty()) {
			UtilBean.processaAcao();
		} else {
			enviar(result, origem);
		}
	}

	public void enviar(Result result, String origem) {
		// redicionar para o jsp correspondente
		UtilBean.redireciona(pagina, result, origem);
	}

	public void enviarMensagem(String campo, String mensagem) {
		// formatar a mensagem de erro, posicionar no campo informa
		if (campo != null) {
			campofocus = campo;
		} else {
			campofocus = "";
		}
		this.mensagem = mensagem;
		temMensagem = true;
		// enviar(result, origem);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		UtilBean.funcao = this.funcao;
		ValidarFuncao();
		if (temMensagem) {
			return false;
		}
		sessao.getScrg001().setWContadorw(this.jContadorj);
		sessao.getScrg001().setWEmpresaw(this.jEmpresaj);
		sessao.getScrg001().setWFuncaow(this.jFuncaoj);
		sessao.getScrg001().setWProgramaw(this.jProgramaj);
		sessao.getScrg001().setWVersaow(this.jVersaoj);
		return true;
	}

	private void ValidarFuncao() {
		// Consist�ncia F00funcao
		if (!(UtilBean.funcao.equals(UtilBean.ctt_processa) || UtilBean.funcao.equals(UtilBean.ctt_retorna))) {
			enviarMensagem(null, "");
			return;
		}
	}

	public String getJversaoj() {
		return jVersaoj;
	}

	public void setJversaoj(String jVersaoj) {
		this.jVersaoj = jVersaoj;
	}

	public String getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(String dataCorrente) {
		this.dataCorrente = dataCorrente;
	}

	public String getJfuncaoj() {
		return jFuncaoj;
	}

	public void setJfuncaoj(String jFuncaoj) {
		this.jFuncaoj = jFuncaoj;
	}

	public int getJcontadorj() {
		return jContadorj;
	}

	public void setJcontadorj(int jContadorj) {
		this.jContadorj = jContadorj;
	}

	public int getJalarm() {
		return jAlarm;
	}

	public void setJalarm(int jAlarm) {
		this.jAlarm = jAlarm;
	}

	public String getChave() {
		return chave;
	}

	public void setChave(String chave) {
		this.chave = chave;
	}

	public long getJregGeral() {
		return jregGeral;
	}

	public void setJregGeral(long jregGeral) {
		this.jregGeral = jregGeral;
	}

	public long getJcpf() {
		return jCpf;
	}

	public void setJcpf(long jCpf) {
		this.jCpf = jCpf;
	}

	public String getJpmandp() {
		return jPmandp;
	}

	public void setJpmandp(String jPmandp) {
		this.jPmandp = jPmandp;
	}

	public String getJnomecompleto() {
		return jNomeCompleto;
	}

	public void setJnomecompleto(String jNomeCompleto) {
		this.jNomeCompleto = jNomeCompleto;
	}

	public String getJmae() {
		return jMae;
	}

	public void setJmae(String jMae) {
		this.jMae = jMae;
	}

	public String getJpai() {
		return jPai;
	}

	public void setJpai(String jPai) {
		this.jPai = jPai;
	}

	public String getJddnasc() {
		return jDdNasc;
	}

	public void setJddnasc(String jDdNasc) {
		this.jDdNasc = jDdNasc;
	}

	public String getJmmnasc() {
		return jMmNasc;
	}

	public void setJmmnasc(String jMmNasc) {
		this.jMmNasc = jMmNasc;
	}

	public String getJaanasc() {
		return jAaNasc;
	}

	public void setJaanasc(String jAaNasc) {
		this.jAaNasc = jAaNasc;
	}

	public int getJcodmunnascimento() {
		return jCodMunNascimento;
	}

	public void setJcodmunnascimento(int jCodMunNascimento) {
		this.jCodMunNascimento = jCodMunNascimento;
	}

	public String getJufnascimento() {
		return jUfNascimento;
	}

	public void setJufnascimento(String jUfNascimento) {
		this.jUfNascimento = jUfNascimento;
	}

	public String getJnatural() {
		return jNatural;
	}

	public void setJnatural(String jNatural) {
		this.jNatural = jNatural;
	}

	public int getJocorrencia() {
		return jOcorrencia;
	}

	public void setJocorrencia(int jOcorrencia) {
		this.jOcorrencia = jOcorrencia;
	}

	public int getJartigo() {
		return jArtigo;
	}

	public void setJartigo(int jArtigo) {
		this.jArtigo = jArtigo;
	}

	public String getJinciso() {
		return jInciso;
	}

	public void setJinciso(String jInciso) {
		this.jInciso = jInciso;
	}

	public String getJalinea() {
		return jAlinea;
	}

	public void setJalinea(String jAlinea) {
		this.jAlinea = jAlinea;
	}

	public int getJparagrafo() {
		return jParagrafo;
	}

	public void setJparagrafo(int jParagrafo) {
		this.jParagrafo = jParagrafo;
	}

	public int getJlei() {
		return jLei;
	}

	public void setJlei(int jLei) {
		this.jLei = jLei;
	}

	public int getJanolei() {
		return jAnoLei;
	}

	public void setJanolei(int jAnoLei) {
		this.jAnoLei = jAnoLei;
	}

	public int getJmatricula() {
		return jMatricula;
	}

	public void setJmatricula(int jMatricula) {
		this.jMatricula = jMatricula;
	}

	public String getJnomedigitador() {
		return jNomeDigitador;
	}

	public void setJnomedigitador(String jNomeDigitador) {
		this.jNomeDigitador = jNomeDigitador;
	}

	public String getJdiadig() {
		return jDiaDig;
	}

	public void setJdiadig(String jDiaDig) {
		this.jDiaDig = jDiaDig;
	}

	public String getJmesdig() {
		return jMesDig;
	}

	public void setJmesdig(String jMesDig) {
		this.jMesDig = jMesDig;
	}

	public String getJanodig() {
		return jAnoDig;
	}

	public void setJanodig(String jAnoDig) {
		this.jAnoDig = jAnoDig;
	}

	public int getJhorario() {
		return jHorario;
	}

	public void setJhorario(int jHorario) {
		this.jHorario = jHorario;
	}

	public String getJempresaj() {
		return jEmpresaj;
	}

	public void setJempresaj(String jEmpresaj) {
		this.jEmpresaj = jEmpresaj;
	}

	public String getJprogramaj() {
		return jProgramaj;
	}

	public void setJprogramaj(String jProgramaj) {
		this.jProgramaj = jProgramaj;
	}

	public String[] getJalcunha() {
		return jAlcunha;
	}

	public void setJalcunha(String[] jAlcunha) {
		this.jAlcunha = jAlcunha;
	}

	public String[] getJobservacoes() {
		return jObservacoes;
	}

	public void setJobservacoes(String[] jObservacoes) {
		this.jObservacoes = jObservacoes;
	}

	public String getJalcunha(int index) {
		return jAlcunha[index];
	}

	public void setJalcunha(int index, String jAlcunha) {
		this.jAlcunha[index] = jAlcunha;
	}

	public String getJobservacoes(int index) {
		return jObservacoes[index];
	}

	public void setJobservacoes(int index, String jObservacoes) {
		this.jObservacoes[index] = jObservacoes;
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) {
		this.horaCorrente = horaCorrente;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	public String getCampofocus() {
		return campofocus;
	}

	public void setCampofocus(String campofocus) {
		this.campofocus = campofocus;
	}

	public String getNavegar() {
		return navegar;
	}

	public void setNavegar(String navegar) {
		this.navegar = navegar;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public void setMensagemSaida(String mensagem) {
		this.mensagem = mensagem;
	}

	public boolean getEnviada() {
		return this.enviada;
	}

	public void setSessao(Sessao sessao) {
		this.sessao = sessao;
	}
}
